]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shell-recorder-src: use timestamping from basesrc
authorWim Taymans <wtaymans@redhat.com>
Wed, 11 Jun 2014 15:07:22 +0000 (17:07 +0200)
committerWim Taymans <wtaymans@redhat.com>
Mon, 23 Jun 2014 15:15:44 +0000 (17:15 +0200)
Use the do-timestamp feature of basesrc to place the correct timestamp
on each outgoing buffer.

src/shell-recorder-src.c

index af75b211af2cd31d533f509b4caa04e87d781eb2..b26d5ca3f713288c719679a1b8e535bf3a0a6ae8 100644 (file)
@@ -14,9 +14,6 @@ struct _ShellRecorderSrc
   GMutex mutex_data;
   GMutex *mutex;
 
-  GstClock *clock;
-  GstClockTime last_frame_time;
-
   GstCaps *caps;
   GAsyncQueue *queue;
   gboolean closed;
@@ -45,9 +42,7 @@ shell_recorder_src_init (ShellRecorderSrc      *src)
 {
   gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
   gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
-
-  src->clock = gst_system_clock_obtain ();
-  src->last_frame_time = 0;
+  gst_base_src_set_do_timestamp (GST_BASE_SRC (src), TRUE);
 
   src->queue = g_async_queue_new ();
   src->mutex = &src->mutex_data;
@@ -113,9 +108,6 @@ shell_recorder_src_create (GstPushSrc  *push_src,
 
   buffer = g_async_queue_pop (src->queue);
 
-  if (src->last_frame_time == 0)
-    src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
-
   if (buffer == RECORDER_QUEUE_END)
     {
       /* Returning UNEXPECTED here will cause a EOS message to be sent */
@@ -127,9 +119,6 @@ shell_recorder_src_create (GstPushSrc  *push_src,
                                         - (int)(gst_buffer_get_size(buffer) / 1024));
 
   *buffer_out = buffer;
-  GST_BUFFER_DURATION(*buffer_out) = GST_CLOCK_DIFF (src->last_frame_time, gst_clock_get_time (GST_CLOCK (src->clock)));
-
-  src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
 
   return GST_FLOW_OK;
 }
@@ -171,8 +160,6 @@ shell_recorder_src_finalize (GObject *object)
 
   g_mutex_clear (src->mutex);
 
-  gst_object_unref (src->clock);
-
   G_OBJECT_CLASS (shell_recorder_src_parent_class)->finalize (object);
 }